package eventos.aceptar;

import java.awt.Window;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JOptionPane;

import logica.SinNombreException;

import controlador.ControladorCrearProyecto;
import controlador.ControladorEditor;
import controlador.CrearProyectoException;

import vista.objetos.ProyectoGraficable;
import vista.ventanas.VentanaProyectoNuevo;

public class EventoAceptarNombreProyecto  extends MouseAdapter {
	
	private VentanaProyectoNuevo ventanaProyecto;
	private ControladorEditor controlador;
	
	public EventoAceptarNombreProyecto(VentanaProyectoNuevo ventanaProyecto, ControladorEditor controlador)
	{
		super();
		this.ventanaProyecto = ventanaProyecto;
		this.controlador = controlador;
	}
	
	public void mouseClicked(MouseEvent evento)
	{
		try
		{
			verificarPathNoVacio();
			verificarSiNombreNoVacio();

			ProyectoGraficable proyecto = ControladorCrearProyecto.crearProyectoNuevo(ventanaProyecto.getPath(), ventanaProyecto.getNombreProyecto());
				
			Window padre = this.ventanaProyecto.getOwner();
				
			this.ventanaProyecto.setVisible(false);
			padre.setVisible(false);
				
			this.ventanaProyecto = null;
			padre = null;
				
			controlador.abrirVentanaEditor(proyecto);
		}
		catch (SecurityException e)
		{
			JOptionPane.showMessageDialog(this.ventanaProyecto, "No se tienen los permisos necesarios para crear la estructura de directorios. \n Intente otro path.", "Error en los Datos", JOptionPane.ERROR_MESSAGE);
		}
		catch (CrearProyectoException e)
		{
			JOptionPane.showMessageDialog(this.ventanaProyecto, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
		}
		catch (SinNombreException e)
		{ // se supone que no podría pasar
			JOptionPane.showMessageDialog(this.ventanaProyecto, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
		}
		
	
	}

	private void verificarSiNombreNoVacio() throws CrearProyectoException {
		if (ventanaProyecto.getNombreProyecto().isEmpty() || ventanaProyecto.getNombreProyecto() == null)
			throw new CrearProyectoException("No se especifico el nombre del proyecto.");
	}

	private void verificarPathNoVacio() throws CrearProyectoException 
	{
		if (ventanaProyecto.getPath().isEmpty() || ventanaProyecto.getPath() == null )
			throw new CrearProyectoException("No se especifico el path");
	}
}
